import java.util.Scanner;


/**
 * 
 * @author victor
 *
 */
public class SeleccionActividades {
	
	/**
	 * Intercambia dos actividades
	 * @param datos int[][] matriz de las actividades
	 * @param uno int primer dato a intercambiar
	 * @param otro int segundo dato a intercambiar
	 * @return int[][] matriz de las actividades con el intercambio realizado
	 */
	private static int[][] intercambia(int[][] datos, int uno, int otro) {
	    // almacena primer dato
		int temp_fin = datos[1][uno];
	    int temp_inicio = datos[0][uno];
	    // segundo dato se copia al primero
	    datos[1][uno] = datos[1][otro];
	    datos[0][uno] = datos[0][otro];
	    // segundo datos se sobreescribe con el primero
	    datos[1][otro] = temp_fin;
	    datos[0][otro] = temp_inicio;
	    return datos;
	}
	
	/**
	 * Ordenacion de las actividades por tiempo de finalizacion
	 * @param datos int[][] matriz con los datos de las actividades
	 * @param inicio int inicio de la ordenacion
	 * @param fin int fin de la ordenacion
	 * @return int[][] matriz de las actividades ordenadas por finalizacion
	 */
	private static int[][] quicksort(int[][] datos, int inicio, int fin) {
		int i = inicio, j = fin;
		// actividad temporal
		int temp = datos[1][inicio + (fin-inicio)/2];
		// mientras la actividad de inicio sea menor que la de fin
	    while (i <= j) {
	    	// mientras este ordenado se avanza hasta encontrar uno que no este ordenado
	    	while (datos[1][i] < temp) {
	    		i++;
	    	}  
	    	while (datos[1][j] > temp) {
	    		j--;
	    	} 
	    	// si no esta ordenado se intercambia valor
	    	if (i <= j) {
	    		datos = intercambia(datos, i++, j--);
	    	}
	    }
	    // ordenar la primera parte
	    if (inicio < j) {
	    	datos = quicksort(datos,inicio, j);
	    }
	    // ordenar la segunda parte
	    if (i < fin) {
	    	datos = quicksort(datos,i, fin);
	    }
	    return datos;
	}	
	
	/**
	 * Calcula el numero maximo de actividades sin solaparse
	 * @param datos int[][] matriz de dos filas con tiempos iniciales y finales 
	 * @return int numero maximo de actividades sin solaparse
	 */
	private static int maxActividadesSinSolapar(int[][] datos) {
		// numero de actividades sin solapar
		int actividades = 1;
		// ultima actividad sin solapar
		int ultima_actividad=0;
		// primera fila contiene los tiempos iniciales
		int comienzos = 0;
		// segunda fila contiene los tiempos finales
		int finales = 1;
		// si no habia ninguna actividad
		if (datos[comienzos].length == 0) {
			return 0;
		}
		// al menos habia 1 actividad
		else {
			// ordenar datos por orden de finalizacion
			datos = quicksort(datos, 0, datos[1].length-1);
			// recorrido de todas las actividades
			for (int i=1; i< datos[comienzos].length; i++) {
				// comprobar que no se solape
				if ( datos[comienzos][i] >= datos[finales][ultima_actividad]) {
					actividades++;
					ultima_actividad = i;
				}
			}
			return actividades;
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		String linea;
		String[] entrada;
		int[][] datos;
		int actividades;
		// pide numero de actividades
		linea = sc.nextLine();
		try {
			// crea contenedor de tiempos de actividades
			actividades = Integer.parseInt(linea);
			datos = new int[2][ actividades ];
			// pide datos de actividades
			// i=0 tiempos iniciales
			// i=1 tiempos finales
			for (int i=0; i<2 && actividades>0 ; i++){
				entrada = sc.nextLine().split(" ");
				for (int j=0,k=entrada.length; j<k; j++){
					datos[i][j] = Integer.parseInt(entrada[j]);
				}
			}
			// calcular maximo de actividades sin solaparse
			int solucion = maxActividadesSinSolapar(datos);
			System.out.println( solucion );
			
		} catch (Exception e) {
			System.out.println("0");
		}

	}

}
